#ifndef CLASS_MANAGER_SCENE_HPP_
# define CLASS_MANAGER_SCENE_HPP_

# include <vector>

# include "Abstract/Manager/AManager.hpp"
# include "Abstract/Scene/AScene.hpp"

# include "Class/Manager/Graphics.hpp"
# include "Class/Manager/Input.hpp"

namespace	Manager
{
  class		Scene: public AManager
  {
  private:
	typedef std::vector< ::Scene::AScene*>		Scenes;


  public:
	Scene(Manager::Graphics &);

  private:
	Scene(Scene const &) : AManager(false), _Graphics(*static_cast<Manager::Graphics*>(0)), _Input(_Graphics), _Scenes() {}

	Scene const			&operator=(Scene const &) { return (*this); }

  public:
	bool				Run();

	~Scene() throw();


  private:
	bool				_Initialize();

	bool				_UpdateScenes(float);
	void				_DrawScenes();


  private:
	Manager::Graphics	&_Graphics;
	Manager::Input		_Input;

	Scenes				_Scenes;
  };
}

#endif
